#ifndef __MCDRAWARCCOMMAND_H_
#define __MCDRAWARCCOMMAND_H_

#include <MCCommand.h>
#include <MCArcVisual.h>
#include <MCCircleVisual.h>
#include <MCArcParametricWindow.h>

enum MCDrawArcStage
{
    Arc_SetCenter,
    Arc_SetRadius,
    Arc_SetEndAngle,
    Arc_ParametricWindow
};

class MCDrawArcCommand : public MCCommand
{
public:

    MCDrawArcCommand(MCCommandManager *owner);
    ~MCDrawArcCommand();

    void onMouseDown(IMouseArgs &args) override;
    void onMouseUp(IMouseArgs &args) override;
    void onMouseMove(IMouseArgs &args) override;

    void terminate() override;

private:

    MCArcParametricWindow *_parametricWindow;
    MCDrawArcStage _currentStage;
    MCArcVisual *_arcVisual;
    MCCircleVisual *_tempCircleVisual;
    MCPoint2D _settedCenter;
    MCPoint2D _startPoint;
    MCPoint2D _endPoint;
    double _settedRadius;
    double _settedStartAngle;
    double _settedEndAngle;

};

#endif // !__MCDRAWARCCOMMAND_H_
 